// 1. 字面量创建
const obj1 = {}

/**
 * 2. new操作符创建：创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例
 * 
 * 调用的时候发生四件事：
 * a. 创建一个空对象({})；
 * b. 为新对象添加属性 __proto__ , 将该属性链接至构造函数的原型对象；
 * c. 执行构造函数方法，属性和方法被添加到this引用的对象中；
 * d. 如果构造函数中没有返回新对象，那么返回this，即创建这个新对象。否则返回构造函数中返回的对象。
 */
const obj2 = new Object()

/**
 * 3. 使用 Object.create() 创建对象
 * Object.create() 方法创建一个新对象，使用现有的对象来提供新创建的对象的 __proto__。
 */
const obj3 = Object.create(null)


console.log(obj1, obj2, obj3);

console.log('obj1 === obj2', obj1 == obj2);

console.log('obj1 === obj3', obj1 == obj3);

console.log('obj2 === obj3', obj2 == obj3);
